# import numpy as np
# import pandas as pd
# import matplotlib.pyplot as plt
# import statsmodels.api as sm

# # 1. 使用MATLAB自带的carsmall数据集
# # 由于Python中没有直接的carsmall数据集，我们可以使用一个类似的合成数据集或者从其他来源获取数据
# # 这里我们使用一个示例数据集来模拟carsmall数据集中的MPG和Weight数据

# # 创建示例数据
# np.random.seed(42)  # 设置随机种子以确保结果可重复
# n = 100  # 样本数量
# weight = np.random.uniform(2000, 4000, n)  # 随机生成车重数据（单位：磅）
# mpg = 50 - 0.005 * weight + np.random.normal(0, 2, n)  # 生成MPG数据，模拟线性关系并添加噪声

# # 将数据转换为DataFrame
# data = pd.DataFrame({'Weight': weight, 'MPG': mpg})

# # 2. 通过散点图观察变量之间的关系
# plt.figure(figsize=(8, 6))
# plt.scatter(data['Weight'], data['MPG'], alpha=0.7)
# plt.title('Scatter Plot of MPG vs. Weight')
# plt.xlabel('Weight (pounds)')
# plt.ylabel('MPG (miles per gallon)')
# plt.grid(True)
# plt.show()

# # 3. 建立一元线性模型，并进行线性回归
# # 添加常数项（截距）
# X = sm.add_constant(data['Weight'])
# y = data['MPG']

# # 拟合线性回归模型
# model = sm.OLS(y, X).fit()

# # 输出回归结果
# print(model.summary())

# # 可视化回归线
# plt.figure(figsize=(8, 6))
# plt.scatter(data['Weight'], data['MPG'], alpha=0.7, label='Data Points')
# plt.plot(data['Weight'], model.predict(X), color='red', label='Regression Line')
# plt.title('Linear Regression of MPG vs. Weight')
# plt.xlabel('Weight (pounds)')
# plt.ylabel('MPG (miles per gallon)')
# plt.legend()
# plt.grid(True)
# plt.show()